package com.zrrd.learn.chapter08.Hero;

import lombok.Data;

import java.util.Scanner;

/**
 * 英雄
 *
 * @author asus
 * @version 1.0
 * @date 2023/7/24 11:21
 */
//2.（1）定义一个游戏中Hero 英雄的类，在该类中定义英雄的名字， 生命值和等级3 个属性，定义一个构造函数完成对生命值和等级的初始化，分别赋初值为100，1。同时实现名字的输入和英雄信息的输出。

//        （2）在上一题的基础上，为英雄再定义拥有一个参数的构造方法，传入一个英雄类型的值，如果为1，则为普通英雄，生命值为100，如果该值为2，则为高级英雄，生命值初始化为200。

//        （3）在上两英雄类型的基础上，为英雄添加一个基本战斗的方法， 该方法拥有一个英雄类型的参数，当传入另一个英雄时，能降低对方100 点血。 再增加一个绝招的重载方法，加入一个战斗类型参数，通过输入不同绝招参数，降低对方不同的血量。

@Data
public class Hero {

    String name;
    int live;
    int level;

    public void nameInput() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入英雄名字：");
        name = sc.nextLine();
    }

    public void showHero() {
        System.out.println("名字：" + name + "\t" + "血量：" + live + "\t" + "等级：" + level);
    }

    public Hero() {
        this.live = 100;
        this.level = 1;
        nameInput();
        showHero();
    }

    public Hero(int num) {
        nameInput();
        if (num == 1) {
            System.out.println("该英雄为普通英雄");
            this.live = 100;
        } else if (num == 2) {
            System.out.println("该英雄为高级英雄");
            this.live = 200;
        }
        this.level = 1;
        showHero();
    }

    public void fight(Hero h1) {
            h1.live -=100;
        System.out.println(h1.name+"受到攻击，生命值-100");
        showHero();
    }
    public void fight(Hero h2,int num){
        if(num==1){
            h2.live-=50;
            System.out.println(h2.name+"受到铁画银钩技能的攻击，血量-50");
            showHero();
        }else if(num==2){
            h2.live-=30;
            System.out.println(h2.name+"受到扫六合技能的攻击，血量-30");
            showHero();
        }else if(num==3){
            h2.live-=100;
            System.out.println(h2.name+"受到蛟龙镇海技能的攻击，血量-100");
            showHero();
        }
    }
}
